import axios, {AxiosInstance,  AxiosResponse, AxiosError, InternalAxiosRequestConfig} from 'axios';

const instance: AxiosInstance = axios.create({
    baseURL: 'http://testapi.xuexiluxian.cn', // 基础 URL
    timeout: 5000, // 请求超时时间
    headers: {
        'Content-Type': 'application/json'
    }
});

instance.interceptors.request.use(
    (config: InternalAxiosRequestConfig) => {
        // 添加认证信息
        const token = localStorage.getItem('token');
        if (token) {
            config.headers!.Authorization = `Bearer ${token}`;
        }


        return config;
    },
    (error: AxiosError) => {
        // 处理请求错误
        console.error('Request error:', error);
        return Promise.reject(error);
    }
);


instance.interceptors.response.use(
    (response:AxiosResponse) => {
        return response.data;
    },
    (error:AxiosError) => {
        // 处理响应错误
        if (error.response) {
            // 请求已发出，服务器返回了非2xx的状态码
            switch (error.response.status) {
                case 401:
                    // 未授权
                    console.error('Unauthorized:', error);
                    break;
                case 403:
                    // 禁止访问
                    console.error('Forbidden:', error);
                    break;
                default:
                    console.error('Response error:', error);
            }
        } else if (error.request) {
            // 请求已发出，但没有收到响应
            console.error('No response received:', error.request);
        } else {
            // 设置请求时出错
            console.error('Error setting up request:', error.message);
        }
        return Promise.reject(error);
    }
);
export default instance;

